package com.itany.corejava.code07_常用类.string;

import java.util.Arrays;

/**
 * @author MissChen
 * @date 2024年02月29日 13:43
 */
public class Test08_正则表达式 {
    public static void main(String[] args) {

        // Regular Expression正则表达式
        //匹配字符串中只有一个a
        System.out.println("a".matches("a"));//true

        //匹配字符串中是否只有3个b
        System.out.println("bbb".matches("b{3}"));

        //匹配字符串中至少有5个d
        System.out.println("ddddddddddd".matches("d{5,}"));

        //匹配字符串至少出现1次
        System.out.println("ddddddddddd".matches("d+"));
        System.out.println("ddddddddddd".matches("d{1,}"));

        //匹配字符串e至少出现0次或者1次
        System.out.println("e".matches("e{0,1}"));
        System.out.println("e".matches("e?"));

        //匹配字符串f至少出现2次或者最多出现4次
        System.out.println("ffff".matches("f{2,4}"));

        // 匹配字符串b出现0次或者多次
        System.out.println("b".matches("b{0,}"));
        System.out.println("bbbb".matches("b*"));

        // 匹配指定字符串:[abc]表示a或者b或者c中的任意一个
        System.out.println("abc".matches("[abc]"));

        //匹配指定字符串3-5个
        System.out.println("acaba".matches("[abc]{3,5}"));

        //匹配0-9中的任意一个数字
        System.out.println("5".matches("[0-9]"));
        //匹配0-9中的任意数字
        System.out.println("9".matches("\\d"));
        System.out.println("----");
        //匹配a-z中的任意一个字母
        System.out.println("c".matches("[a-z]"));
        System.out.println("R".matches("[A-Z]"));

        //匹配任意数字任意字母
        System.out.println("9".matches("[0-9a-zA-Z]"));

        System.out.print("a\nbc");
        System.out.println("----------");

        //匹配除了换行符以外的任意字符
        System.out.println("t".matches("."));
        System.out.println("\n".matches("."));
        System.out.println("\t".matches("."));
        System.out.println(".".matches("."));

        //如果点号.需要表示点号，需要进行转义或者放置在[]中
        System.out.println("\t".matches("\\."));
        System.out.println(".".matches("[.]"));

        //匹配0-9中的任意数字
        System.out.println("9".matches("\\d"));
        System.out.println("9111".matches("\\d+"));
        //匹配除了数字以外的所有字符, 非数字
        System.out.println("_".matches("\\D"));

        // 匹配英文字母、数字、下划线
        System.out.println("5".matches("[0-9a-zA-Z_]"));
        System.out.println("a".matches("\\w"));

        // 匹配除了英文字母、数字、下划线以外的字符
        System.out.println("!".matches("\\W"));

        //匹配空格
        System.out.println(" ".matches("\\s"));

        //匹配除了空格以外的字符
        System.out.println("a".matches("\\S"));

        // 匹配3位或者5位
        System.out.println("123".matches("\\d{3}|\\d{5}"));
        System.out.println("123".matches("\\d{3}(\\d{2})?"));

        //前三位是数字后四位是字母
        System.out.println("123weaq".matches("\\d{3}[a-zA-Z]{4}"));

        //将所有的连续的数字都替换成空格
        System.out.println("hello123world45678addd89233admin233uiey".replaceAll("\\d+"," "));

        //将每个数字都替换成空格
        System.out.println("hello123world45678addd89233admin233uiey".replaceAll("\\d"," "));

        //根据所有的连续的数字进行分割，分割成数组
        String arr[]="hello123world45678addd89233admin233uiey".split("\\d+");
        System.out.println(Arrays.toString(arr));

        //以数字或者!或者@或者#或者_进行分割，有可能多个进行分割
        String arr2[]="hello123world!!ad@hhj_admin233ui#ey".split("[0-9!@#_]+");
        System.out.println(Arrays.toString(arr2));

        System.out.println("|".matches("[a|b]"));//要么a，要么竖线，要么是b



    }
}
